/**
 * @param {number[][]} intervals
 * @param {number[]} newInterval
 * @return {number[][]}
 */
var insert = function (intervals, newInterval) {
  const res = [];
  let i = 0;

  // 1. 添加所有结束点小于新区间起始点的区间（不重叠）
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    res.push(intervals[i]);
    i++;
  }

  // 2. 合并所有与新区间重叠的区间
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]); // 更新合并区间的起点
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]); // 更新合并区间的终点
    i++;
  }
  res.push(newInterval); // 将合并后的新区间加入结果

  // 3. 添加剩余区间（起始点大于新区间终点的区间）
  while (i < intervals.length) {
    res.push(intervals[i]);
    i++;
  }

  return res;
};